Seat Based (Bulk) License Model

Developing Applications Using The SoftwareShield System > Creating Licensing Solutions > Available License Models > Seat Based (Bulk) License Model

## Seat Based (Bulk) License Model

This model allows you to deliver a "token of ownership" (normally a Serial Number) which represents an arbitrary number of activations (seats) of your software. This model is common in enterprise class applications. Many organizations require the flexibility of purchasing a "set of seats" from their software vendors.

Note that the seat based license model must be combined with some other model - normally this is Copy-Protection. This type of combination for example allows you to sell an arbitrary number of copy-protection activations (seats) to your application. In that example, the model would be a combination of seat based and copy-protection license models. All other models can be combined with the seat based license model.

Seat based license models can only be achieved when you choose the Server Edition of SoftwareShield because of its reliance on the CheckPoint Server Centrally Controlled Licensing.

### Overview - How to Integrate the Seat Based License Model Into Your Application

1. The first step is deciding what other aspect of your license model you will make "seat based". The most common is Copy-Protection. Once you have decoded this - set up the model as described in that license model section (see: Available License Models).

2. Now that you know what aspect of your license model will be seat based, you have to upload your license details to the CheckPoint License Server to enable CheckPoint Central Server Controlled Licensing - thus allowing you to enforce seat activation limitations. You do this with the SoftwareShield License Manager, see: Add License to CheckPoint Server. You will also need to deploy your license project file there too, see: Test CheckPoint Server License File.

3. Now that your license meta data and the license project file is on the server, you must decide if you will pre-generate, or dynamically generate the Serial Numbers for the ownership of a set of seats - or even some combination of both. In the case of Commercial Off The Shelf (COTS) License Models for example, you will want to pre-generate the Serial Numbers because they have to be physically included in the box. By contrast, you can programmatically generate the Serial Numbers in real-time as a direct result of a sale or other back-end authentication operation.

1. If you decide to pre-generate Serial Numbers, you will do this with the SoftwareShield License Manager. See: Generate Serial Numbers.

2. If you decide to generate Serial Numbers in real-time, you will do this either through a simple HTTP GET query or with a series of web-service calls. See: HTTP GET URL Interface and SOAP Web-Service Interface

4. Now that you have dealt with a high level data flow of Serial Numbers to your clients, you should turn from the design of your license to the design of your code. Mainly - you can implement the host application logic like you would in the case of the base license model - but there are a few other considerations:

1. If you are using Seat-Based Copy-Protection, you can define an event handler for OnPrepareAutoActivate. This event handler fires synchronously from the StartUp function and will allow you to determine if a connection to your CheckPoint server can be established from the clients location. You will respond to the event by present a UI to the client and allowing them to make some decisions about activation. They can decide to automatically activate through the internet, or manually activate by phone. (You do not have to provide both choices if you don't want to). You can within the scope of this even handler perform other actions to get ready for activation including setting up a proxy server. When the event handler returns processing continues and the ClientProtector may or may not attempt to contact the CheckPoint server as a result of the reference parameters you returned.

2. If you are using any other type of seat-based model, you must wait for the StartUp call to return and then separately perform the necessary calls to the ClientProtector to get it to connect to the CheckPoint server to perform an automated activation. See: AutoActivateSerialNumber Or, if you want to have the user do a "phone-in" activation, you will use: InputActivationCodeSN to input the Activation Code you gave them over the phone along with the Serial Number you had verified on the phone.

5. Now, depending on the return value from the ClientProtector StartUp call or the result of these other calls, you can launch the program or not. Put simply, the ClientProtector will tell you if your program has been authorized to run on this specific machine or not. Its as easy as that. For information on how to interpret the return_code parameter, have a look at RETURNCODES.